/*
 * @Author: ipk518 121206530@qq.com
 * @Date: 2023-11-20 10:15:22
 * @LastEditors: ipk518 121206530@qq.com
 * @LastEditTime: 2023-11-22 22:27:05
 * @FilePath: /moduleTest/inc/myLog.h
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */

#ifndef _MYLOG_H
#define _MYLOG_H
#include <stdint.h>
#include <stdbool.h>
#ifdef __cplusplus
extern "C"
{

#else 
// typedef enum _bool
// {
// 	false = 0,
// 	true,
// }bool;
#endif

bool my_logInit(const char* confFile);
void deInitLog();
void error(const char* fmt, ...);
void warn(const char* fmt, ...);
void debug(const char *file, const char *func,
        const long line, const char *format, ...);
void info(const char* fmt, ...);
void trace(const char* fmt, ...);
void qlog_hexdump(const char *name, uint8_t width, uint8_t *buf, uint16_t size);

#if defined(__unix) || defined(__linux)
#define qlog_e(format,args...)                       do \
                                                    { \
                                                        error(format,##args); \
                                                    }while(0)
#define qlog_w(format,args...)                        do \
                                                    { \
                                                        warn(format,##args); \
                                                    }while(0)
#define qlog_i(format,args...)                      do \
                                                    { \
                                                        info(format,##args); \
                                                    }while(0)
#define qlog_d(...)                                 do \
                                                    { \
                                                        debug(__FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
                                                    }while(0)
#define qlog_v(format,args...)                       do \
                                                    { \
                                                        trace(format,##args); \
                                                    }while(0)
#elif defined(_WIN32)
#define qlog_e(format, ...)                       do \
                                                    { \
                                                        error(format, ##__VA_ARGS__); \
                                                    }while(0)
#define qlog_w(format, ...)                        do \
                                                    { \
                                                        warn(format, ##__VA_ARGS__); \
                                                    }while(0)
#define qlog_i(format, ...)                        do \
                                                    { \
                                                        info(format, ##__VA_ARGS__); \
                                                    }while(0)
#define qlog_d(format, ...)                       do \
                                                    { \
                                                        debug(format, ##__VA_ARGS__); \
                                                    }while(0)
#define qlog_v(format, ...)                       do \
                                                    { \
                                                        trace(format, ##__VA_ARGS__); \
                                                    }while(0)
#endif



#ifdef __cplusplus
}
#endif

#endif